package com.tbit.uqbike.service.baseAbstract;

import java.util.List;

/**
 * 同步配置抽象基类
 *
 * @author <a href="mailto:liu.haoxiang@tbit.com.cn">BUGXiang</a>
 * @version 1.0
 * @see <a href="http://adsl1.tbit.com.cn:21490/pages/viewpage.action?pageId=82182491">订单号规范</a> todo
 * @since 2025-2-19
 */

public abstract class SynchronousService {

    /**
     * 获取配置
     *
     * @param accountId 区域id
     * @return List<?>
     */
    protected abstract List<?> queryConfig(Integer accountId);


    /**
     * 删除原配置
     * @param accountId 区域id
     */
    protected abstract void deleteConfig(Integer accountId);


    /**
     * 新增配置
     * @param objects 配置列表
     * @param accountId 区域id
     */
    protected abstract void insertConfig(List<?> objects, Integer accountId);


    /**
     * 同步配置
     * @param accountId 需要获取的区域id
     * @param addAccountId 需要新增配置的区域
     */
    public void synchronousConfig(Integer accountId, Integer addAccountId) {
        List<?> configList = queryConfig(addAccountId);
        deleteConfig(accountId);
        insertConfig(configList, accountId);
    }

}
